查看原文
其他

利用 Bytebase 与 Terraform 实现 TiDB Cloud 的一站式变更管理

cy Bytebase 2023-05-09


TiDB Cloud 实现秒级的数据库实例供给

TiDB Cloud 是云原生的分布式 HTAP 数据库服务托管平台,其具备弹性伸缩与实时数据分析等一系列能力应对各种复杂的业务需求,而 Serverless 的服务模式让用户可以在数秒内完成一套 HTAP 数据库实例部署。


数据库的变更管理应该如何进行?

数据库实例供应完成后,数据库的生命周期刚刚开始。随着业务的发展变化,数据库需要不断的进行 Schema 结构修改(如创建表、索引)或进行一些数据改动,针对此类操作的管理称之为数据库变更管理。如果忽略了相关工作,轻则影响了数据库的运行性能,重则发布了错误语句(如误删表)导致业务长时间中断。

Bytebase 针对 TiDB Cloud 的一站式数据库变更管理方案

Bytebase 已全面支持 TiDB Cloud

TiDB 是 Bytebase 首批支持的数据库,伴随着 TiDB Cloud 的上线,Bytebase 也完成了适配。

以 DevOps 理念设计的变更管理流程

Bytebase 以 DevOps 理念设计,应用开发团队可以深度参与到变更管理协作中。以应用项目为边界,不同的团队允许对所属项目数据库发起变更请求,并实现自助审核与发布。而 DBA 拥有审核策略制定与最终审核权。

自动审核能力大幅提升 SQL 审核质量与效率

Bytebase 提供了大量针对 TiDB 的 SQL 审核规范,管理员可以结合自身业务特点配置并激活不同的审核策略,并在变更工单中实现全自动审核。

多租户模式通过自动结构同步等多种机制确保多库结构一致性

对于 SaaS、网络游戏等业务场景,往往需要一次性对多个数据库进行完全相同的变更,而 Schema 的细微差异都可能导致部分库变更失败。Bytebase 多租户模式提供批量结构比对、自动结构同步、变更语句强制一致等机制确保同构数据库的结构一致性,让每一次批量变更都顺利完成。

与代码管理平台集成实现 GitOps 的变更管理流程

Bytebase 实现了与 GitLab/GitHub 等平台的集成,开发者可以直接在代码仓库中管理并提交 TiDB 的变更脚本,并实现 SQL 脚本的全自动审核,完成代码合并后变更请求将自动发布到目标数据库中。这种模式兼容了广大开发者的工作习惯,同时通过将审核流程前置到 CI 阶段,避免了 CD 阶段再进行审核的仓促性,显著提升了发布质量与效率。


利用 Terraform 实现 TiDB Cloud 实例的完整管理

Terraform 实现了基础设施代码化,以可重复、可预测的方式定义和配置基础设施资源,减少因人为因素导致的错误,尤其适用于大规模基础设施的管理。
数据库区别于其他基础设施,其是有状态的,因此除了数据库实例层面的供给与配置管理之外,还需要关注数据库结构与数据的变更管理。TiDB Cloud 作为实例托管服务,Bytebase 作为变更管理工具,均实现了对 Terraform 的支持。用户可以轻松的利用 Terraform 全自动的创建 TiDB Cloud 实例并纳入 Bytebase 管理,这种管理模式可确保每一个新诞生的 TiDB Cloud 实例都立即处于有效的变更管控之下。

利用 Terraform 管理 TiDB Cloud 实例的供给与配置

TiDB Cloud Terraform Provider 实现了创建并配置 TiDB Cloud 服务,详细配置流程参考文档 Terraform Integration Overview (https://docs.pingcap.com/tidbcloud/terraform-tidbcloud-provider-overview)
以下代码创建了一个 TiDB Cloud Serverless Resource:
terraform { required_providers { tidbcloud = { source = "tidbcloud/tidbcloud" } }}
# Instructions for getting an API Key# https://docs.pingcap.com/tidbcloud/api/v1beta#section/Authentication/API-Key-Management# You can also pass the keys through environment variables:# export TIDBCLOUD_PUBLIC_KEY = "fake_public_key"# export TIDBCLOUD_PRIVATE_KEY = "fake_private_key"provider "tidbcloud" { public_key = "fake_public_key" private_key = "fake_private_key"}

利用 Terraform 将 TiDB 实例纳入 Bytebase 变更管理流程中

Bytebase Terraform Provider 实现了将数据库实例纳入变更管理的基本配置流程,详细配置流程参考文档 Manage Bytebase with Terraform (https://www.bytebase.com/docs/get-started/terraform#configure-bytebase-terraform-provider)
以下代码将指定的 TiDB Cloud 实例添加到 Bytebase 中:
# Configure the Bytebase Providerterraform { required_providers { bytebase = { version = "0.0.7-alpha.3" # For local development, please use "terraform.local/bytebase/bytebase" instead source = "registry.terraform.io/bytebase/bytebase" } }}
provider "bytebase" { # You need to replace the account and key with your Bytebase service account. service_account = "your service account" service_key = "your service key" # The Bytebase service URL. You can use the external URL in production. # Check the docs about external URL: https://www.bytebase.com/docs/get-started/install/external-url url = "your bytebase console url"}

新一代的数据库变更管理体验

TiDB Cloud 帮助开发人员在几秒钟内配置一个无服务器的分布式 HTAP 数据库。通过 Bytebase,开发团队能有一个单一的门户来管理整个 TiDB Cloud 数据库的开发生命周期。
此外,还有 Terraform 的加持来来贯彻数据库即代码(Database-as-Code),团队得以将整个数据库的配置和部署过程代码化。
这也是我们希望提供的用户体验:一个易于使用的数据库开发和管理解决方案,供开发者和 DBA 协作使用。

    招募|做 Bytebase 新手村任务,赢取京东卡+周边!
    Star History 月度开源精选|2023 年 1 月
    Bytebase 和 GitHub 签署 Technology Partner 技术合作伙伴协议
    Bytebase x Terraform|使用 Terraform 管理 Bytebase 资源

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存